Computer systems employing scheduled tasks ideally operate by having each task being executed at its regularly scheduled time, often at predefined intervals. Scheduled tasks may not run at the desired time, however, due to various technical problems with the system such as the failure of an application or a server. Once the system is operational again, however, the application that monitors and executes the scheduled tasks must decide whether to either discard or execute the tasks that failed to run at their scheduled times. The execution of tasks in a timely manner may be critical to the intended operation of the computer system, particularly for systems executing data storage backup software tasks.
The typical solution for determining what to do with unexecuted tasks is to have a policy of either always executing or always ignoring overdue tasks. Another workaround is to execute the overdue tasks only if a defined period of time has not yet elapsed, which provides an additional opportunity for tasks to be executed if such tasks can be executed shortly after their originally scheduled time. Each of these approaches, however, are inefficient and imprecise, and may lead to tasks being executed unnecessarily, or not at all when they are most needed. What is needed in the art is a dynamic way to determine whether to execute missed tasks through a configurable setting.